作者:泰有趣 | 来源:互联网 | 2024-09-24 19:25
篇首语:本文由编程笔记#小编为大家整理,主要介绍了光照 法线矩阵(Normal Matrix)相关的知识,希望对你有一定的参考价值。
- 定义
模型矩阵左上角3x3部分的逆矩阵的转置矩阵。
注意,大部分的资源都会将法线矩阵定义为应用到模型-观察矩阵(Model-view Matrix)上的操作,但是由于我们只在世界空间中进行操作(不是在观察空间),我们只使用模型矩阵。
1.1 法向量如何转换为世界空间坐标?
对法向量实施缩放和旋转变换。
乘以一个模型矩阵?
Problem: 模型矩阵执行了不等比缩放,顶点的改变会导致法向量不再垂直于表面了
逆矩阵(Inverse Matrix)
转置矩阵(Transpose Matrix)
1.2
使用inverse和transpose函数自己生成这个法线矩阵,这两个函数对所有类型矩阵都有效
Normal = mat3(transpose(inverse(model))) * aNormal;
矩阵求逆对于着色器运算开销很大,因为它必须在场景中的每一个顶点上进行,应尽可能避免在着色器中进行求逆运算。先在CPU上计算出法线矩阵,再通过uniform把它传递给着色器(就像模型矩阵一样)。